package com.atguigu.jxc.service;

import com.atguigu.jxc.domain.ServiceVO;
import com.atguigu.jxc.entity.Goods;

import java.util.Map;

public interface GoodsService {


    ServiceVO getCode();


    /**
     * 分页查询商品库存信息
     *
     * @param page        当前页
     * @param rows        每页显示条数
     * @param codeOrName  商品编码或名称
     * @param goodsTypeId 商品类别ID
     * @return
     */
    Map<String,Object> listInventory(Integer page, Integer rows, String codeOrName, Integer goodsTypeId);



    /**
     * 查询所有商品单位
     * @return
     */
    Map<String, Object> unitList();


    /**
     * 分页查询商品信息
     * @param page
     * @param rows
     * @param goodsName
     * @param goodsTypeId
     * @return
     */
    Map<String, Object> goodList(Integer page, Integer rows, String goodsName, Integer goodsTypeId);



    /**
     * 保存或修改商品
     * @param goods
     */
    void saveGoods(Goods goods);

    /**
     * 查询无库存商品
     * @param page
     * @param rows
     * @param nameOrCode
     * @return
     */
    Map<String, Object> getNoInventoryQuantity(Integer page, Integer rows, String nameOrCode);

    /**
     * 分页查询有数据
     * @param page
     * @param rows
     * @param nameOrCode
     * @return
     */
    Map<String, Object> getHasInventoryQuantity(Integer page, Integer rows, String nameOrCode);

    /**
     * 添加商品库存或修改价格
     * @param goodsId
     * @param inventoryQuantity
     * @param purchasingPrice
     */
    void saveStock(Integer goodsId, Integer inventoryQuantity, double purchasingPrice);

    /**
     * 删除商品
     * @param goodsId
     */
    ServiceVO deleteGoods(Integer goodsId);

    /**
     * 删除商品库存
     * @param goodsId
     * @return
     */
    ServiceVO deleteStock(Integer goodsId);

    /**
     * 查询库存报警商品信息
     * @return
     */
    Map<String, Object> listAlarm();

}
